Michael Madison II.
-------------------

Total Project:
--------------
Both Nader and I decided to raytrace caustics through a pool of water.
Although we had originally submitted with optional project additives of
either particle interaction/splash or shading a duck (suggested by Pat). 
We finally decided to tackle the volume rendering of participating medium,
with the vision of a final rendering to include both the caustics on the
floor of our water body as well as our scatter light in the medium.

My Project Responsibilities:
----------------------------
My responsibilites included but were not limited to the following:

+ Writing the PhotonIntegrator (non-volumetric)
o this is the second pass of a based on Henrik Jensens method of two passes, 
  the first pass casts out the photons and the second collects photons after refracting
  them through a transmittive surface, as well as doing the other raytracing. According
  to Henrik's paper i also made the collection of photons adaptive to the amount of 
  photons we expected. If we didn't grab enough then we enlarged the radius. One speed-up
  was made by determining if the next possible photon that could ever be grabbed was 
  way too far away -- if this was so then we stopped the calculations and used whatever
  amount of photons we had collected thus far and proceeded to the next ray. There
  are tons of variables as well as a surface dependency making it hard to know what part 
  of the code should be changed. 
+ Writing the VolumePhoton Map Generator (essentially pass one again only volumetric)
o this was done using an approach by Henrik Jensen of casting out a specified
  number of photons only this time when they were refracted through a transmittive
  material raymarching began.  At this point based on some random conditions the photon
  is either absorbed, propagated through to the next march, or scattered and then 
  propagated
+ Writing the PhotonVolumeIntegrator (essentially pass two again only volumetric) it
  be noted that debugging was absolutely horrendous dude to the fact that ray marching 
  slows renders down exponentially.. 
 
- Modelling a real water simulation with MEL and Maya (see attached difficulty
  section)

Difficulties:
-------------

** Modelling and Exporting **

Originally one of my major resposibilities had been the modelling of the
water surface using Maya; a surface that would guarantee us beautiful caustics.
Additionally, my plan was to model an animal to be placed in the water, as I
was not sure using someone else's model was ok. I had written wonderful .MEL
scripts to simulate a perturbed water surface with turbulence, this made it
only more difficult to export to a .RIB file, which was already a full-time job.
In the end, we made the executive decision that my time was better spent on something
more technical. Nader created a simple sinusoidal surface and we moved on from there.
(I do however have some pretty images of a turtle I modelled).

** Volumetric Participating Medium **

As stated earlier the vision we had in mind for our render involved two images. One
from the top surface of the water close up showing off beautiful caustics; and the other
from inside the water showing off both the volumetric scatterring of participating medium
as well as the aforementioned caustics on the floor.  The p

Acknowledgements
----------------

I would first like to thank God, not only because He helped me through this -- but also 
because it bothers Greg when people do this.  Seriously there were some divinely epiphinous
gems of knowledge who origin could have only come from God.  God allowed me to live through
the agonizing sleepless night of down-right sinful amounts of coding and pointless sugar 
and caffeine consuption. 

I would like to thank the people of Krispy Kreme and Happy Doughnuts, who upon seeing the
pain in my face from this project *DONATED* both doughnuts and coffee to my cause. For
this reason I continue to advocated patronage to both places. 

Next I would like to thank Greg for sometimes helping and sometimes not... the epitome of
a great TA -- seriously, he's the best TA ever. And yes Greg, both God and the people of
Krispy Kreme do rank higher on the list. C'mon.. i mean it *IS* God and Krispy Kreme.. 
third chair is not so bad.

I would also like to thank Pat for smacking me around in this class and for not cursing me
out when I asked stupid questions during office hours; like "huh?" and "what is this 
graphics stuff?"

Last but certainly not least, Nader, my partner. I has been a painful, sleepless joy 
working on this project with you. Thanks for putting up with me.
